package app.v1.wdt.service;

import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

/**
 * wdt销售订单编号发电机服务
 * @author feizns
 * @since 2023/07/19
 */
public interface WdtSalesOrderIdGeneratorService {

    /**
     * 下一个编号
     * @param shopId 商店编号
     * @param date 日期
     * @return {@link Long}
     */
    @Transactional
    Long nextId(String shopId, String warehouseNo, LocalDate date);

    /**
     * 下一个订单号
     * @param shopNo 商店编号
     * @param date 日期
     * @param warehouseNo 仓库没有
     * @return {@link String}
     */
    default String nextOrderNo(String shopNo, String warehouseNo, LocalDate date) {
        Long nextId = nextId(shopNo, warehouseNo, date);
        String yyyyMMdd = date.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
        return String.format("%s-[%s]-[%s]-%02d", yyyyMMdd, shopNo, warehouseNo, nextId);
    }

}
